package com.offics.loan.infrastructure.common;

import lombok.Getter;

/**
 * 结果码枚举
 */
@Getter
public enum ResultCode {

    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 失败
     */
    FAILURE(400, "操作失败"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 系统错误
     */
    SYSTEM_ERROR(500, "系统错误"),

    /**
     * 参数错误
     */
    PARAM_ERROR(1000, "参数错误"),

    /**
     * 用户不存在
     */
    USER_NOT_FOUND(2000, "用户不存在"),

    /**
     * 用户名或密码错误
     */
    USER_PASSWORD_ERROR(2001, "用户名或密码错误"),

    /**
     * 用户已禁用
     */
    USER_DISABLED(2002, "用户已禁用"),

    /**
     * 用户名已存在
     */
    USER_EXISTS(2003, "用户名已存在"),

    /**
     * 认证异常
     */
    LOGIN_ERROR(2002, "认证异常"),

    /**
     * 账号锁定异常
     */
    ACCOUNT_LOCKED(2002, "账号锁定异常"),

    /**
     * 手机号已存在
     */
    PHONE_EXISTS(2004, "手机号已存在"),

    /**
     * 邮箱已存在
     */
    EMAIL_EXISTS(2005, "邮箱已存在"),

    /**
     * 原密码错误
     */
    OLD_PASSWORD_ERROR(2006, "原密码错误"),

    /**
     * 银行卡不存在
     */
    BANK_CARD_NOT_FOUND(3000, "银行卡不存在"),

    /**
     * 银行卡已存在
     */
    BANK_CARD_ALREADY_EXISTS(3001, "银行卡已存在"),

    /**
     * 银行卡不属于当前用户
     */
    BANK_CARD_NOT_BELONG_TO_USER(3002, "银行卡不属于当前用户"),

    /**
     * 银行卡已禁用
     */
    BANK_CARD_DISABLED(3003, "银行卡已禁用"),

    /**
     * 默认银行卡不能删除
     */
    BANK_CARD_DEFAULT_CANNOT_DELETE(3004, "默认银行卡不能删除"),

    /**
     * 默认银行卡不能禁用
     */
    BANK_CARD_DEFAULT_CANNOT_DISABLE(3005, "默认银行卡不能禁用"),
    
    /**
     * 贷款不存在
     */
    LOAN_NOT_FOUND(4000, "贷款不存在"),

    /**
     * 贷款产品不存在
     */
    LOAN_PRODUCT_NOT_FOUND(4001, "贷款产品不存在"),
    
    /**
     * 贷款产品已禁用
     */
    LOAN_PRODUCT_DISABLED(4002, "贷款产品已禁用"),
    
    /**
     * 贷款金额超出范围
     */
    LOAN_AMOUNT_OUT_OF_RANGE(4003, "贷款金额超出范围"),
    
    /**
     * 贷款期限超出范围
     */
    LOAN_PERIOD_OUT_OF_RANGE(4004, "贷款期限超出范围"),
    
    /**
     * 贷款状态错误
     */
    LOAN_STATUS_ERROR(4005, "贷款状态错误"),
    
    /**
     * 贷款不能取消
     */
    LOAN_CANNOT_CANCEL(4006, "贷款不能取消"),
    
    /**
     * 贷款不属于当前用户
     */
    LOAN_NOT_BELONG_TO_USER(4007, "贷款不属于当前用户"),
    
    /**
     * 贷款未放款
     */
    LOAN_NOT_ISSUED(4008, "贷款未放款"),
    
    /**
     * 贷款已结清
     */
    LOAN_ALREADY_COMPLETED(4009, "贷款已结清"),
    
    /**
     * 贷款产品已存在
     */
    LOAN_PRODUCT_ALREADY_EXISTS(4010, "贷款产品已存在"),
    
    /**
     * 还款计划不存在
     */
    REPAYMENT_PLAN_NOT_FOUND(5000, "还款计划不存在"),
    
    /**
     * 还款记录不存在
     */
    REPAYMENT_RECORD_NOT_FOUND(5001, "还款记录不存在"),
    
    /**
     * 还款计划不属于当前贷款
     */
    REPAYMENT_PLAN_NOT_BELONG_TO_LOAN(5002, "还款计划不属于当前贷款"),
    
    /**
     * 还款计划不能还款
     */
    REPAYMENT_PLAN_CANNOT_REPAY(5003, "还款计划不能还款"),
    
    /**
     * 还款金额错误
     */
    REPAYMENT_AMOUNT_ERROR(5004, "还款金额错误"),
    
    /**
     * 还款记录不属于当前用户
     */
    REPAYMENT_RECORD_NOT_BELONG_TO_USER(5005, "还款记录不属于当前用户"),
    
    /**
     * 还款记录不属于当前贷款
     */
    REPAYMENT_RECORD_NOT_BELONG_TO_LOAN(5006, "还款记录不属于当前贷款"),

    /**
     * 还款记录不属于当前还款计划
     */
    REPAYMENT_RECORD_NOT_BELONG_TO_PLAN(5007, "还款记录不属于当前还款计划");


    /**
     * 结果码
     */
    private final int code;

    /**
     * 结果消息
     */
    private final String message;

    ResultCode(int code, String message) {
        this.code = code;
        this.message = message;
    }
}